package com.yunxin.download.server.infra.support.file.export.service;

import com.yunxin.download.server.infra.support.file.FileHeader;

import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;


/**
 * excel导出服务类
 * @author zero°
 * @since 2023-06-15
 */

public interface FileExportService {

    /**
     * 初始化
     * @param sheetName sheetName
     * @param excelHeader excelHeader
     * @param outputStream outputStream
     */
    void init(String sheetName, Class<? extends FileHeader> excelHeader, OutputStream outputStream);


    /**
     * 初始化
     * @param fileName     fileName
     * @param inputStream  inputStream
     * @param outputStream outputStream
     */
    default void init(String fileName, InputStream inputStream, OutputStream outputStream) {
    }

    /**
     * 追加写入数据
     * @param data data
     */
    void append(List<Object> data);

    /**
     * 追加写入数据
     * @param data data
     */
    default void appendByMap(List<Map<String, Object>> data) {
    }

    /**
     * 完成写入
     * @return OutputStream
     */
    OutputStream finish();

    /**
     * 获取文件类型后缀
     * @return String
     */
    String getFileTypeSuffix();

}
